package com.campus.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.campus.constant.JwtClaimsConstant;

import java.util.Date;
import java.util.Map;

public class JwtUtil {

    /**
     * 生成JWT
     *  使用Hs256算法，私匙使用固定密匙
     *
     * @param secretKey jwt密匙
     * @param ttlMillis 过期时间
     * @param claim    设置的信息
     * @return jwt令牌
     */
    public static String createJWT(String secretKey, long ttlMillis, Map<String, Object> claim){

        return JWT.create()
                .withClaim(JwtClaimsConstant.CLAIM, claim)
                .withExpiresAt(new Date(System.currentTimeMillis() + ttlMillis))  // 设置过期时间为1小时后
                .sign(Algorithm.HMAC256(secretKey));
    }

    /**
     * 解析JWT
     * @param token jwt令牌
     * @return
     */
    public static DecodedJWT decodeJWT(String token) {
         return JWT.decode(token);
    }
}
